﻿//      打印最⼩公倍数
//题⽬描述：
//输⼊2个整数m和n，计算m和n的最⼩公倍数，并打印出结果
//6.2 解法思路:
//最⼩公倍数是指两个或多个整数共有倍数中最⼩的⼀个。为了求出两个数的最⼩公倍数，可以采⽤枚
//举试除法。
//1. 具体来说，公倍数⼀定⼤于两个数，从两个数中的较⼤值开始枚举；
//2. 从⼩到⼤依次判断能否同时整除这两个数，若某个数满⾜同时被两个数整除，则其为公倍数；
//3. 从⼩到⼤遍历找到公倍数时，此数即为最⼩公倍数，此时应当结束循环；
//• 特别地，最⼩公倍数可以由两数乘积除以两数的最⼤公约数求得。
#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d %d", &m, &n);
//	//计算m和n的较⼤值
//	//m和n的最⼩公倍数，最⼩也是m和n中较⼤的值
//	int k = (m > n ? m : n);
//	//重复对k进⾏判断
//	while (1)
//	{
//		//若k被两数同时整除,则k为公倍数,并且此时⼀定是最⼩公倍数
//		if (k % m == 0 && k % n == 0)
//		{
//			printf("%d\n", k);
//			
//			break;
//		}
//		//k的值加⼀,对下⼀个数进⾏判断
//		k++;
//	}
//	return 0;
//}
////⽅法2
//#include <stdio.h>
//int main()
//{
//	int m = 0;
//	int n = 0;
//	//输⼊
//	scanf("%d %d", &m, &n);//18 24
//	int k = 0;
//	int mul = m * n;
//	//辗转相除法求得最⼤公约数
//	while (k = m % n)
//	{
//		m = n;
//		n = k;
//	}
//	printf("%d\n", mul / n);
//	return 0;
//}
// 明确最小公倍数的概念  x * y == Z 
//假设 3 4 = 12 ，2 6 = 6，1 2 = 2，
#include <stdio.h>

int main()
{
	int x = 0;
	int y = 0;

	scanf("%d %d",&x,&y);
	int n = 0;
	int z = 0;
	for (n = 1;n <= x* y;n++);
	{
		if (x > y)
		{
			static int n = 0;
			z = y * n ;
			if (z == x)
			{
				printf("%d", z);
				goto over;
			}

		}
		else
		{
			static int n = 0;
			z = x * n;
			if (z == y)
			{
				printf("%d", z);
				goto over;
			}

		}
	}
	over:
	return 0;
}
//总结来说，for循环的执行顺序是：初始化->条件测试->循环体执行->增量 / 减量->再次条件测试 -> ...，直到条件测试为假时退出循环。
//因此，for循环开始时是先把初始量带进去，而不是先按照条件进行加减乘除后在代入


//！！！！！！！！！！ 存储上一次的n

#include <stdio.h>

void loop1()
{
	static int n = 0; // static 保留 n 的值
	if (n < 10)
	{
		printf("Loop1: n = %d\n", n);
		n++;
	}
}

void loop2()
{
	static int n = 0; // static 保留 n 的值
	if (n < 10)
	{
		printf("Loop2: n = %d\n", n);
		n++;
	}
}

int main()
{
	for (int i = 0; i < 10; i++)
	{
		loop1(); // 执行一次 loop1
		loop2(); // 执行一次 loop2
	}
	return 0;
}
Loop1: n = 0
Loop2 : n = 0
Loop1 : n = 1
Loop2 : n = 1
Loop1 : n = 2
Loop2 : n = 2
Loop1 : n = 3
Loop2 : n = 3
Loop1 : n = 4
Loop2 : n = 4
Loop1 : n = 5
Loop2 : n = 5
Loop1 : n = 6
Loop2 : n = 6
Loop1 : n = 7
Loop2 : n = 7
Loop1 : n = 8
Loop2 : n = 8
Loop1 : n = 9
Loop2 : n = 9


//              交替运行！！！！！！！！！！！
#include <stdio.h>

int n = 0; // 全局变量
int flag = 0; // 标志位：0表示运行loop1，1表示运行loop2

void loop1()
{
	if (n < 10)
	{
		printf("Loop1: n = %d\n", n);
		n++;
		flag = 1; // 下一次运行loop2
	}
}

void loop2() {
	if (n < 10)
	{
		printf("Loop2: n = %d\n", n);
		n++;
		flag = 0; // 下一次运行loop1
	}
}

int main()
{
	while (n < 10	)
	{
		if (flag == 0)
		{
			loop1();
		}
		else {
			loop2();
		}
	}
	return 0;
}



Loop1: n = 0
Loop2 : n = 1
Loop1 : n = 2
Loop2 : n = 3
...
Loop1 : n = 8
Loop2 : n = 9
